/**
 * Created by wangzih on 2015/1/22.
 */

/** 检查浏览器类型 */
var userAgent = window.navigator.userAgent;

/*是Ie浏览器*/
var docMode = document.documentMode;
var isMSIE = /(MSIE)/g.test(userAgent);
var isie = isMSIE;
var isie6 = isie && !window.XMLHttpRequest;
var isie7 = isie && /(MSIE 7)/g.test(userAgent) || docMode == 7;
var isie8 = isie && /(MSIE 8)/g.test(userAgent) && docMode != 7;
var isie6 = isie && /(MSIE 6)/g.test(userAgent) && !isie7 && !isie8;
var isie9 = isie && /(MSIE 9)/g.test(userAgent) && !isie7 && !isie8;
var isie10 = isie && /(MSIE 10)/g.test(userAgent) && !isie7 && !isie8;
var isie11 = isie && /(rv:11)/g.test(userAgentViaServer)&& !isie7 && !isie8 && !isie9 && !isie10 ;
/*获取IE版本*/
var ieVersion = isie?(isie11?11:(isie10?10:(isie9?9:(isie8?8:(isie7?7:(isie6?6:Number.MAX_VALUE)))))):Number.MAX_VALUE;

/*是Firefox浏览器*/
var isFirefox = /(Firefox)/g.test(userAgent);
var isff = isFirefox;

/*是Opera浏览器*/
var isOpera = /(Opera)/g.test(userAgent);
/*是Safari内核的谷歌浏览器*/
var isChrome = /(Chrome)/g.test(userAgent);
/*是Safari内核的浏览器*/
var isSafari = !isChrome && /(Safari)/g.test(userAgent);
var issf = isSafari;
/*是Ipad上的浏览器*/
var UserAgent = navigator.userAgent.toLowerCase(); 
var isIpad = UserAgent.match(/ipad/i) == "ipad";
/*是Iphone上的浏览器*/
var isIphone = UserAgent.match(/iphone/i) == "iphone";
/*是Android上的浏览器*/
var isAndroid = UserAgent.match(/android/i) == "android";
/*是移动设备*/
var isMobile = isIpad || isIphone || isAndroid;
/*页面包含DOCTYPE标签声明*/
var isCSS1Compat = document.compatMode == "CSS1Compat";
/**
 * 设置子类fConstr从父类fSuperConstr继承，sname是子类的名字，可以不传递。
 * 例如如果B需要从A继承，那么需要执行:extendClass(B,A,"B");
 *
 * 此函数往往是在js的初始化时执行的，所以：
 * 需要注意的是当执行此函数时，B和A这2个对象必须已经初始化，即A所在的js必须已经被装载或A与B在一个js中。
 *
 * @param {func} fConstr，子类构造函数
 * @param {func} fSuperConstr，父类构造函数
 * @param {str} sName，子类名
 */
function extendClass(fConstr, fSuperConstr, sName) {
    if (typeof(fSuperConstr) == "string") {
        var ooo = window[fSuperConstr];
        if (!ooo) {// 父类可能还没有初始化，此时需要设置延迟继承。
            return;// 延迟继承有子类在自己的构造方法中写入_extendClass_runtime来实现
        }
        fSuperConstr = ooo;
    }
    if (fConstr._superClass == fSuperConstr)
        return;
    var f = function(){};
    f.prototype = fSuperConstr.prototype;
    fConstr._superClass = fSuperConstr;
    var p = fConstr.prototype = new f();
    if (sName) {
        p._className = sName;
    }
    p.constructor = fConstr;
    return p;
}

/**
 * 异步请求
 * @param url
 * @param data
 * @param func
 */
function sendMsgSync(url,map,func){
	var data=map.data;
	$.ajax({
	   type: "POST",
	   url: url,
	   data: data,
	   success:func
	});
}
/**
 * 同步请求
 * @param url
 * @param data
 * @param func
 */
function sendMsgAsync(url,map,func){
	var data=map.data;
	$.ajax({
	   type: "POST",
	   url: url,
	   async: false,
	   data: data,
	   success:func
	});
}
/**
 * 传参的map
 */
function Map(){
	this.data="";
}
Map.prototype.put=function(key,value){
	if(this.data==""){
	this.data+=key+"="+value;
	}else{
		this.data+="&"+key+"="+value;
	}
}
